<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>组成扩展的文件</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="internals2.structure.html">扩展的结构</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="internals2.structure.basics.html">Basic constructs</a></div>
 <div class="up"><a href="internals2.structure.html">扩展的结构</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="internals2.structure.files" class="sect1">
  <h2 class="title">组成扩展的文件</h2>
  <p class="para">
   不管是通过手工，通过<strong class="command">ext_skel</strong> ，还是通过另外的扩展生成器，例如
   <a href="http://codegenerators.php-baustelle.de/" class="link external">&raquo;&nbsp;CodeGen</a>，所有的扩展都会有至少四个文件：
  </p>

  <dl>

   
    <dt>
<var class="filename">config.m4</var></dt>

    <dd>

     <p class="para">
      UNIX 构建系统配置 (见
      <a href="internals2.buildsys.configunix.html" class="xref">与 UNIX 构建系统交互: config.m4</a>)
     </p>
    </dd>

   

   
    <dt>
<var class="filename">config.w32</var></dt>

    <dd>

     <p class="para">
      Windows 构建系统配置 (见
      <a href="internals2.buildsys.configwin.html" class="xref">使用 Windows 构建系统：config.w32</a>)
     </p>
    </dd>

   
   
   
    <dt>
<var class="filename">php_counter.h</var></dt>

    <dd>

     <p class="para">
      当将扩展作为静态模块构建并放入 PHP 二进制包时，构建系统要求用 <em>php_</em>
      加扩展的名称命名的头文件包含一个对扩展模块结构的指针定义。就象其他头文件，此文件经常包含附加的宏、原型和全局量。
     </p>
    </dd>

   
   
   
    <dt>
<var class="filename">counter.c</var></dt>

    <dd>

     <p class="para">
      主要的扩展源文件。按惯例，此文件名就是扩展的名称，但不是必需的。此文件包含模块结构定义、INI
      条目、管理函数、用户空间函数和其它扩展所需的内容。
     </p>
    </dd>

   
  </dl>

  
  <p class="para">
   构建系统的文件在别处讨论，本节关注于其余的部分。扩展应包含任意数量的头文件、源文件、单元测试和其他支持文件，此四个文件仅够组成最小的扩展。counter
   扩展的文件列表如下所示：
  </p>
  
  <div class="example" id="internals2.structure.files.ex1">
   <p><strong>Example #1 counter 扩展中的文件，未特别排序</strong></p>
   <div class="example-contents screen">
<div class="cdata"><pre>
ext/
 counter/
  .cvsignore
  config.m4
  config.w32
  counter_util.h
  counter_util.c
  php_counter.h
  counter.c
  package.xml
  CREDITS
  tests/
   critical_function_001.phpt
   critical_function_002.phpt
   optional_function_001.phpt
   optional_function_002.phpt
</pre></div>
   </div>
  </div> 
  
  <div class="sect2" id="internals2.structure.files.misc-files">
   <h3 class="title">非源文件</h3>
   <p class="para">
    <var class="filename">.cvsignore</var> 文件用于已检入一个 PHP <strong class="command">CVS</strong>
    资源库（通常是 <a href="http://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a>）的扩展，由 <strong class="command">ext_skel</strong> 生成的这个文件内容如下： 
   </p>
  
   <div class="informalexample">
    <div class="example-contents">
<div class="cvsignorecode"><pre class="cvsignorecode">.deps
*.lo
*.la</pre>
</div>
    </div>

   </div>
  
   <p class="para">
    这几行告诉 <strong class="command">CVS</strong> 要忽略由 PHP 构建系统生成的临时文件。这只是惯例，可以被完全省略掉且无不良影响。
   </p>
   
   <p class="para">
    <var class="filename">CREDITS</var> 文件用纯文本格式列出了扩展的贡献者和（或 ）维护者。此文件的主要用途是为已捆绑的扩展生成被
    <span class="function"><a href="function.phpcredits.html" class="function">phpcredits()</a></span> 所使用的荣誉信息。按惯例，文件的第一行应保存扩展的名称，第二行是用逗号分隔的贡献者名单。贡献者通常是按其贡献物的时间顺序排序。例如，在
    <a href="http://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a> 包中，此信息已经维护在 <var class="filename">package.xml</var> 中了。这就是可以被省略且无不良影响的其他文件。
   </p>
   
   <p class="para">
    <var class="filename">package.xml</var> 文件是基于 <a href="http://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a>
    的扩展特有的，是一个元信息文件，记录了扩展的信赖关系、作者、安装需求和其他有价值的信息。对于不是基于 <a href="http://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a>
    的扩展来说，此文件就无关紧要了。
   </p>
  </div>
  
 </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="internals2.structure.html">扩展的结构</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="internals2.structure.basics.html">Basic constructs</a></div>
 <div class="up"><a href="internals2.structure.html">扩展的结构</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
